Secure Execution via Program Shepherding
نویسندگان
چکیده
We introduce program shepherding, a method for monitoring control flow transfers during program execution to enforce a security policy. Program shepherding provides three techniques as building blocks for security policies. First, shepherding can restrict execution privileges on the basis of code origins. This distinction can ensure that malicious code masquerading as data is never executed, thwarting a large class of security attacks. Second, shepherding can restrict control transfers based on instruction class, source, and target. For example, shepherding can forbid execution of shared library code except through declared entry points, and can ensure that a return instruction only targets the instruction after a call. Finally, shepherding guarantees that sandboxing checks placed around any type of program operation will never be bypassed. We have implemented these capabilities efficiently in a runtime system with minimal or no performance penalties. This system operates on unmodified native binaries, requires no special hardware or operating system support, and runs on existing IA-32 machines under both Linux and Windows.
منابع مشابه
Execution Model Enforcement Via Program Shepherding
Nearly all security attacks have one thing in common: they coerce the target program into performing actions that it was never intended to perform. In short, they violate the program’s execution model. The execution model encompasses the Application Binary Interface (ABI), higher-level specifications from the program’s source programming language, and components specific to the program — for ex...
متن کاملControl Flow Confinement: An Empirical Prospect
Dictating program control-flow transfers to be within a reference control-flow graph (CFG) can make a sound software protection. Control flow confinement (CFC) is to ensure the program execution to follow the reference of a control flow graph (CFG) obtained via profiled execution traces with various input data sets. CFC allows only the tested and expected control flows in program execution. Thi...
متن کاملNoninterference via Symbolic Execution
Noninterference is a high-level security property that guarantees the absence of illicit information flow at runtime. Noninterference can be enforced statically using information flow type systems; however, these are criticized for being overly conservative and rejecting secure programs. More precision can be achieved by using program logics, but such an approach lacks its own verification tool...
متن کاملTamper Detection Marking for Object Files
Much of present day computer software is highly mobile, with a great amount of software being delivered to a client host via a network shortly before execution begins. The integrity of mobile code is one important aspect for the secure execution of the code on the client host. We describe a cryptographic-steganographic approach to embedding authentication data within executable object files. Ou...
متن کاملSecuring The Kernel Via Static Binary Rewriting, Program Shepherding And Partial Control Flow Integrity
Recent Microsoft security bulletins show that kernel vulnerabilities are becoming more and more important security threats. Despite the pretty extensive security mitigations many of the kernel vulnerabilities are still exploitable. Successful kernel exploitation typically grants the attacker maximum privilege level and results in total machine compromise. To protect against kernel exploitation,...
متن کامل